#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# post
import os
import sys
BASE_PATH= os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_PATH)

import requests 
import urllib
import json

from common import logger
# from common import logger

log=logger.tlog()
tlogger=log.define()


class UserApiTest(object):
    #def __init__(self,host,port,user,passwd,db,table):
    def __init__(self,env):
        self.user_token = ''
        if env == 'prod':
            self.base_url = 'http://api.paitsetimes.com'
        if env == 'local':
            self.base_url = 'http://127.0.0.1'
            tlogger.info('local')
        tlogger.info('base_url：'+self.base_url)

    def TestToken(self):
        try:
            url = "{}/token".format(self.base_url)
            #tlogger.info(url)
            data = {"username": "test3", "password": 'test12234'} # Post请求发送的数据，字典格式
            res = requests.post(url=url, data=data) # 这里使用post方法，参数和get方法一样
            if res.status_code == 200 :
                tlogger.info('请求接口返回URL：'+res.url)
                tlogger.info('请求接口返回内容：'+res.text)
                
            #tlogger.info('请求接口返回URL：'+res.url)
            #tlogger.info('请求接口返回状态：'+ str(res.status_code))
            #tlogger.info('请求接口返回内容：'+res.text)
            
            # 获取Token
            json1 = json.loads(res.text)
            #self.user_token = json1['data']['access_token']
            self.user_token = (json1['data']['access_token'].replace("b'",'')).replace("'",'')
            strhd = "bearer {}".format(self.user_token)
            self.headers = {"Authorization":strhd}
        except Exception as e:
            tlogger.error('TestToken is Error!')
            tlogger.error(e)
    
    # /token/certify 接口测试
    def TestTokenCertify(self):
        try:
            url = "{}/token/certify".format(self.base_url)
            data = { "token": self.user_token} # Post请求发送的数据，字典格式
            data = json.dumps(data)
            res = requests.post(url=url, data=data) # 这里使用post方法，参数和get方法一样
            if res.status_code == 200 :
                tlogger.info('请求接口返回URL：'+res.url)
                tlogger.info('请求接口返回内容：'+res.text)
        
        except Exception as e:
            tlogger.error('TestTokenCertify is Error!')
            tlogger.error(e)
    
    # /user/v1/me 接口测试
    def TestUserMe(self):
        try:
            url = "{}/user/v1/me".format(self.base_url)
            res = requests.post(url=url, headers=self.headers) # 这里使用post方法，参数和get方法一样
            if res.status_code == 200 :
                tlogger.info('请求接口返回URL：'+res.url)
                tlogger.info('请求接口返回内容：'+res.text)
        
        except Exception as e:
            tlogger.error('TestTokenCertify is Error!')
            tlogger.error(e)
    
    # /user/v1/apilist/{categoryid} 接口测试
    def TestApiList(self):
        try:
            categoryid = '1'
            url = "{}/user/v1/apilist/{}".format(self.base_url,categoryid)
            res = requests.post(url=url, headers=self.headers) # 这里使用post方法，参数和get方法一样
            if res.status_code == 200 :
                tlogger.info('请求接口返回URL：'+res.url)
                tlogger.info('请求接口返回内容：'+res.text)
        
        except Exception as e:
            tlogger.error('Testapilist is Error!')
            tlogger.error(e)
    
    # /user/v1/apiapply 接口测试
    def TestApiApply(self):
        try:
            url = "{}/user/v1/apiapply".format(self.base_url)
            data = { 
                    "username": "test3",
                    "scopesname": "user_premission",
                    "path": "/user/v1/api",
                    "description": "Report Group",
                    "scopesgroup": "User"} # Post请求发送的数据，字典格式
            
            data = json.dumps(data)
            res = requests.post(url=url,headers=self.headers, data=data) # 这里使用post方法，参数和get方法一样
            if res.status_code == 200 :
                tlogger.info('请求接口返回URL：'+res.url)
                tlogger.info('请求接口返回内容：'+res.text)
        
        except Exception as e:
            tlogger.error('TestApiApply is Error!')
            tlogger.error(e)
    
    # /user/v1/userapi 接口测试
    def TestUserApi(self):
        try:
            url = "{}/user/v1/userapi".format(self.base_url)
            res = requests.post(url=url,headers=self.headers) # 这里使用post方法，参数和get方法一样
            if res.status_code == 200 :
                tlogger.info('请求接口返回URL：'+res.url)
                tlogger.info('请求接口返回内容：'+res.text)
        
        except Exception as e:
            tlogger.error('TestTokenCertify is Error!')
            tlogger.error(e)
            


if __name__ == '__main__':
    test = UserApiTest('prod')
    #test = UserApiTest('local')
    test.TestToken()
    test.TestTokenCertify()
    test.TestUserMe()
    test.TestApiList()
    test.TestUserApi()
    test.TestApiApply()
    
